{
	"name": "lldb-vscode",
	"displayName": "LLDB native Debug stub",
	"version": "0.1.0",
	"publisher": "llvm",
	"repository": "llvm.org",
	"description": "Debug adapter for LLDB which uses a C++ tool to interface directly with LLDB.",
	"author": {
		"name": "Greg Clayton",
		"email": "clayborg@gmail.com"
	},
	"license": "LLVM",
	"keywords": [
		"multi-root ready"
	],
	"engines": {
		"vscode": "^1.18.0",
		"node": "^7.9.0"
	},
	"categories": [
		"Debuggers"
	],
	"private": true,
	"devDependencies": {
		"@types/node": "7.0.43",
		"@types/mocha": "2.2.45",
		"typescript": "2.6.2",
		"mocha": "4.0.1",
		"vscode": "1.1.10",
		"vscode-debugadapter-testsupport": "1.25.0",
		"tslint": "5.8.0",
		"vsce": "^1.36.3"
	},
	"contributes": {
		"languages": [
			{
                "id": "lldb.disassembly",
                "aliases": [
                "Disassembly"
                ],
                "extensions": [
                ".disasm"
                ]
			}
		],
		"grammars": [
			{
                "language": "lldb.disassembly",
                "scopeName": "source.disassembly",
                "path": "./syntaxes/disassembly.json"
            }
        ],
        "breakpoints": [
          {
            "language": "ada"
          },
          {
            "language": "arm"
          },
          {
            "language": "asm"
          },
          {
            "language": "c"
          },
          {
            "language": "cpp"
          },
          {
            "language": "crystal"
          },
          {
            "language": "d"
          },
          {
            "language": "fortan"
          },
          {
            "language": "fortran-modern"
          },
          {
            "language": "nim"
          },
          {
            "language": "objective-c"
          },
          {
            "language": "objectpascal"
          },
          {
            "language": "pascal"
          },
          {
            "language": "rust"
          },
          {
            "language": "swift"
          }
        ],
		"debuggers": [
			{
				"type": "lldb-vscode",
				"label": "Native LLDB Debugger",
				"enableBreakpointsFor": {
					"languageIds": [
						"ada",
						"arm",
						"asm",
						"c",
						"cpp",
						"crystal",
						"d",
						"fortan",
						"fortran-modern",
						"nim",
						"objective-c",
						"objectpascal",
						"pascal",
						"rust",
						"swift"
					]
				},
				"program": "./bin/lldb-vscode",
				"windows": {
					"program": "./bin/lldb-vscode.exe"
				},
				"configurationAttributes": {
					"launch": {
						"required": [
							"program"
						],
						"properties": {
							"program": {
								"type": "string",
								"description": "Path to the program to debug."
							},
							"args": {
								"type": [
									"array",
									"string"
								],
								"description": "Program arguments.",
								"default": []
							},
							"cwd": {
								"type": "string",
								"description": "Program working directory.",
								"default": "${workspaceRoot}"
							},
							"env": {
								"type": "array",
								"description": "Additional environment variables to set when launching the program. This is an array of strings that contains the variable name followed by an optional '=' character and the environment variable's value. Example:  [\"FOO=BAR\", \"BAZ\"]",
								"default": []
							},
							"stopOnEntry": {
								"type": "boolean",
								"description": "Automatically stop after launch.",
								"default": false
							},
							"disableASLR": {
								"type": "boolean",
								"description": "Enable or disable Address space layout randomization if the debugger supports it.",
								"default": true
							},
							"disableSTDIO": {
								"type": "boolean",
								"description": "Don't retrieve STDIN, STDOUT and STDERR as the program is running.",
								"default": false
							},
							"shellExpandArguments": {
								"type": "boolean",
								"description": "Expand program arguments as a shell would without actually launching the program in a shell.",
								"default": false
							},
							"detachOnError": {
								"type": "boolean",
								"description": "Detach from the program.",
								"default": false
							},
							"sourcePath": {
								"type": "string",
								"description": "Specify a source path to remap \"./\" to allow full paths to be used when setting breakpoints in binaries that have relative source paths."
							},
							"sourceMap": {
								"type": "array",
								"description": "Specify an array of path remappings; each element must itself be a two element array containing a source and destination pathname. Overrides sourcePath.",
								"default": []
							},
							"debuggerRoot": {
								"type": "string",
								"description": "Specify a working directory to set the debug adaptor to so relative object files can be located."
							},
							"targetTriple": {
								"type": "string",
								"description": "Triplet of the target architecture to override value derived from the program file."
							},
							"platformName": {
								"type": "string",
								"description": "Name of the execution platform to override value derived from the program file."
							},
							"initCommands": {
								"type": "array",
								"description": "Initialization commands executed upon debugger startup.",
								"default": []
							},
							"preRunCommands": {
								"type": "array",
								"description": "Commands executed just before the program is launched.",
								"default": []
							},
							"postRunCommands": {
								"type": "array",
								"description": "Commands executed just as soon as the program is successfully launched when it's in a stopped state prior to any automatic continuation.",
								"default": []
							},
							"launchCommands": {
								"type": "array",
								"description": "Custom commands that are executed instead of launching a process. A target will be created with the launch arguments prior to executing these commands. The commands may optionally create a new target and must perform a launch. A valid process must exist after these commands complete or the \"launch\" will fail. Launch the process with \"process launch -s\" to make the process to at the entry point since lldb-vscode will auto resume if necessary.",
								"default": []
							},
							"stopCommands": {
								"type": "array",
								"description": "Commands executed each time the program stops.",
								"default": []
							},
							"exitCommands": {
								"type": "array",
								"description": "Commands executed at the end of debugging session.",
								"default": []
							},
							"runInTerminal": {
								"type": "boolean",
								"description": "Launch the program inside an integrated terminal in the IDE. Useful for debugging interactive command line programs",
								"default": false
							},
							"timeout": {
								"type": "string",
								"description": "The time in seconds to wait for a program to stop at entry point when launching with \"launchCommands\". Defaults to 30 seconds."
							}
						}
					},
					"attach": {
						"properties": {
							"program": {
								"type": "string",
								"description": "Path to the program to attach to."
							},
							"pid": {
								"type": [
									"number",
									"string"
								],
								"description": "System process ID to attach to."
							},
							"waitFor": {
								"type": "boolean",
								"description": "If set to true, then wait for the process to launch by looking for a process with a basename that matches `program`. No process ID needs to be specified when using this flag.",
								"default": true
							},
							"sourcePath": {
								"type": "string",
								"description": "Specify a source path to remap \"./\" to allow full paths to be used when setting breakpoints in binaries that have relative source paths."
							},
							"sourceMap": {
								"type": "array",
								"description": "Specify an array of path remappings; each element must itself be a two element array containing a source and destination pathname. Overrides sourcePath.",
								"default": []
							},
							"debuggerRoot": {
								"type": "string",
								"description": "Specify a working directory to set the debug adaptor to so relative object files can be located."
							},
							"targetTriple": {
								"type": "string",
								"description": "Triplet of the target architecture to override value derived from the program file."
							},
							"platformName": {
								"type": "string",
								"description": "Name of the execution platform to override value derived from the program file."
							},
							"attachCommands": {
								"type": "array",
								"description": "Custom commands that are executed instead of attaching to a process ID or to a process by name. These commands may optionally create a new target and must perform an attach. A valid process must exist after these commands complete or the \"attach\" will fail.",
								"default": []
							},
							"initCommands": {
								"type": "array",
								"description": "Initialization commands executed upon debugger startup.",
								"default": []
							},
							"preRunCommands": {
								"type": "array",
								"description": "Commands executed just before the program is attached to.",
								"default": []
							},
							"postRunCommands": {
								"type": "array",
								"description": "Commands executed just as soon as the program is successfully attached when it's in a stopped state prior to any automatic continuation.",
								"default": []
							},
							"stopCommands": {
								"type": "array",
								"description": "Commands executed each time the program stops.",
								"default": []
							},
							"exitCommands": {
								"type": "array",
								"description": "Commands executed at the end of debugging session.",
								"default": []
							},
							"coreFile": {
								"type": "string",
								"description": "Path to the core file to debug."
							},
							"timeout": {
								"type": "string",
								"description": "The time in seconds to wait for a program to stop when attaching using \"attachCommands\". Defaults to 30 seconds."
							}
						}
					}
				},
				"initialConfigurations": [
					{
						"type": "lldb-vscode",
						"request": "launch",
						"name": "Debug",
						"program": "${workspaceRoot}/<your program>",
						"args": [],
						"env": [],
						"cwd": "${workspaceRoot}"
					}
				],
				"configurationSnippets": [
					{
						"label": "LLDB: Launch",
						"description": "",
						"body": {
							"type": "lldb-vscode",
							"request": "launch",
							"name": "${2:Launch}",
							"program": "^\"\\${workspaceRoot}/${1:<your program>}\"",
							"args": [],
							"env": [],
							"cwd": "^\"\\${workspaceRoot}\""
						}
					}
				]
			}
		]
	}
}
